# -*- coding: UTF-8 -*-
"""
@File    ：main.py
@Author  ：techPang
@Date    ：2025/2/6 16:48 
@Version ：1.0

案例思路:
1.设计一个类，可以完成数据的封装
2.设计一个抽象类，定义文件读取的相关功能，并使用子类实现具体功能
3.读取文件，生成数据对象
4.进行数据需求的逻辑计算(计算每一天的销售额)
5.通过PyEcharts进行图形绘制
"""
from file_define import FileReader, TextFileReader, JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType

text_file_reader = TextFileReader("./2011年1月销售数据.txt")
json_file_reader = JsonFileReader("./2011年2月销售数据JSON.txt")

# 获取1、2月份的数据
jan_data: list[Record] = text_file_reader.read_date()
feb_data: list[Record] = json_file_reader.read_date()

# 合并两个月份的数据
all_data = jan_data + feb_data

# 开始计算每月的数据，存放到一个字典里 {"月份":金额}
data_dict = {}
for record in all_data:
    if record.date in data_dict.keys():
        # 当前日期已经有了记录，和老记录累加即可
        data_dict[record.date] += record.money
    else:
        # 不存在则新创建记录
        data_dict[record.date] = record.money

# print(data_dict)
# 创建柱状图对象
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))

# 添加x、y轴数据
bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))

# 柱状图全局设置
bar.set_global_opts(
    title_opts=TitleOpts(title="每日销售额",pos_left="center",pos_bottom="1%")
)

bar.render("每日销售额柱状图.html")


